import pika


"""
 示例  消费者从队列中取数据
"""

# 链接并生命要操作的频道、队列
QUEUE_NAME = 'scrape'
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue=QUEUE_NAME)

# 定义的回调方法
def callback(ch, method, properties, body):
    print(f"Get {body}")

"""
这里我们调用了 channel 的 basic_consume 进行消费，同时指定了回调方法 on_message_callback 的名称为 callback，另外还指定了 auto_ack 为 True，这代表消费者获取信息之后会自动通知消息队列，表示这个消息已经被处理了，当前消息可以从队列中移除。

最后将以上代码保存为 consumer.py 并运行，它会监听 scrape 这个队列的变动，如果有消息进入，就会获取并进行消费，回调 callback 方法，打印输出结果。
"""
channel.basic_consume(queue='scrape',
                      auto_ack=True,
                      on_message_callback=callback)
channel.start_consuming()

"""
 表现:  另外我们再次运行 producer.py，每运行一次，生产者都会向其中放入一个消息，消费者便会收到该消息并输出。
"""